---
title: Relay v20.0
author: The Relay Team
hide_table_of_contents: false
---

# Version 20.0.0 Release Notes

## Announcement: ESLint Plugin v2.0.0 Released
Relay's ESLint plugin, [eslint-plugin-relay](https://github.com/relayjs/eslint-plugin-relay), was recently updated to v2.0.0. This release includes a number of compatibility updates and removes a couple of deprecated rules. For more info, see the [eslint-plugin-relay changelog](https://github.com/relayjs/eslint-plugin-relay/blob/main/CHANGELOG.mdx).

## Generated Documentation
This release includes a brand new page covering the [Relay compiler config](https://relay.dev/docs/next/getting-started/compiler-config/). This has largely been undocumented so far and now includes autogenerated documentation! We also added tooling to autogenerate API docs from source code. The documentation for [`useRelayEnvironment`](https://relay.dev/docs/next/api-reference/use-relay-environment/) and [`useLazyLoadQuery`](https://relay.dev/docs/next/api-reference/use-lazy-load-query/) are examples of the new autogenerated tooling.

## Breaking Changes
- Deprecate returning non-model weak types from resolvers. If you were using client side resolvers with the `@outputType` directive, these must be migrated to be strong or weak objects. You can continue to use the `@outputType` directive by enabling the `allow_output_type_resolvers` feature flag in the compiler config. (#5004) by Jordan Eldredge ([commit](https://github.com/facebook/relay/commit/8fbc0b9cc87f))

## Bug fixes
- Fix operation cleanup in RelayModernMockEnvironment by Martin Booth ([commit](https://github.com/facebook/relay/commit/239f6d9351b1))
- Fix nested @defer + 3D when server doesn't support streaming by Tianyu Yao ([commit](https://github.com/facebook/relay/commit/00594e1b7141))
- Fix nested @defer when server doesn't support streaming by Tianyu Yao ([commit](https://github.com/facebook/relay/commit/b801db036d13))
- Fix incremental bug where resolver artifacts were not cleaned up by Jordan Eldredge ([commit](https://github.com/facebook/relay/commit/b270988c0849))
- Fetch missing client edge server queries discovered in nested fragments (#4992) by Jordan Eldredge ([commit](https://github.com/facebook/relay/commit/611f6d9cfc99))
- Pass client edge context to resolver root fragments by Jordan Eldredge ([commit](https://github.com/facebook/relay/commit/4177f3e27b26))
- Fix variable name for imported model resolvers when using ES module imports (#4984) by Jordan Eldredge ([commit](https://github.com/facebook/relay/commit/1073517d9842))
- Fix excluding generated dir under xplat_react by Tianyu Yao ([commit](https://github.com/facebook/relay/commit/9cbd126f113e))

## Improvements
- Add more time loggings in try_saved_state by Tianyu Yao ([commit](https://github.com/facebook/relay/commit/cba7007c7aaf))
- Log saved state info query time in relay compiler by Lynn Yu ([commit](https://github.com/facebook/relay/commit/60b906b921a4))
- Annotate read time resolver promises by Tianyu Yao ([commit](https://github.com/facebook/relay/commit/5ec796e48509))
- Add VSCode tasks for common commands (#5003) by Jordan Eldredge ([commit](https://github.com/facebook/relay/commit/6ab766a3e684))
- Surface prefetchExpiryInHours from the entrypoint by Alice Liu ([commit](https://github.com/facebook/relay/commit/ca7ddea7ed4b))
- Regression test for client edge server data discovered missing in resolver root fragment (#4994) by Jordan Eldredge ([commit](https://github.com/facebook/relay/commit/48c81ad22bbf))
- Run client edge tests for both versions of useFragment by Jordan Eldredge ([commit](https://github.com/facebook/relay/commit/16cd20078c84))
- Update babel transform to default to default to ES modules to match compiler behavior (#4982) by Jordan Eldredge ([commit](https://github.com/facebook/relay/commit/281d76a0b0b4))
- Stop unnecessary runtime transforms by Lynn Yu ([commit](https://github.com/facebook/relay/commit/1eca4a5720ee))
- Support enquoted field alias by Arseniy Panfilov ([commit](https://github.com/facebook/relay/commit/1182ca64e0a0))
- Parser option to allow literal string aliases by Arseniy Panfilov ([commit](https://github.com/facebook/relay/commit/fb9f4d7fcb10))

## Documentation Improvements
- Update graphql.md readability (#5018) by Josh Maloon ([commit](https://github.com/facebook/relay/commit/9facd47af415))
- Add argument definitions to usePaginationFragment docs (#5015) by DrillableBit ([commit](https://github.com/facebook/relay/commit/2b85d3740f40))
- Remove docs on comet_routing_prefetch by Nithik Balachandran ([commit](https://github.com/facebook/relay/commit/5cb92f41b9fc))
- Fix typo in description of the @throwOnFieldError directive by Marius Schulz ([commit](https://github.com/facebook/relay/commit/abedb68a3ad1))
- A couple grammar fixes (#5008) by Roman A ([commit](https://github.com/facebook/relay/commit/8c30f80fe6a2))
- Replace out of date compiler readme with link to up-to-date docs page (#5005) by Jordan Eldredge ([commit](https://github.com/facebook/relay/commit/2c773876c7e8))
- Handle args and returns, convert useLazyLoadQuery by Tianyu Yao ([commit](https://github.com/facebook/relay/commit/c3b70bc3a787))
- Parse some docblock syntax and gen markdown for `useRelayEnvironment` by Tianyu Yao ([commit](https://github.com/facebook/relay/commit/9b7f643c006b))
- Pass compiler config json schema as a prop (#4997) by Jordan Eldredge ([commit](https://github.com/facebook/relay/commit/9f242bb00f54))
- Add docs page describing the Relay lint rules by Jordan Eldredge ([commit](https://github.com/facebook/relay/commit/7eca724d0aea))
- Prevent json schema css for h2 from leaking into the rest of the site by Jordan Eldredge ([commit](https://github.com/facebook/relay/commit/35229211f119))
- Compiler Docs: Improve separators in JSON arrays and objects (#4990) by Jordan Eldredge ([commit](https://github.com/facebook/relay/commit/e59619e23998))
- Make comment into doc comment in config struct (#4989) by Jordan Eldredge ([commit](https://github.com/facebook/relay/commit/0b10aa591cf1))
- Fill in missing documentation in compiler config by Jordan Eldredge ([commit](https://github.com/facebook/relay/commit/70b27dfdfa16))
- Add page documenting the compiler config (#4985) by Jordan Eldredge ([commit](https://github.com/facebook/relay/commit/50fcf8726308))
- Add missing generic type parameter for mutation tutorial example (#4981) by Joey Yu ([commit](https://github.com/facebook/relay/commit/f25a9d19aa91))
- Fixups to quickstart (#4983) by Jordan Eldredge ([commit](https://github.com/facebook/relay/commit/3de18da10cdf))
- Update quick start guide to align with new version of Relay by Jordan Eldredge ([commit](https://github.com/facebook/relay/commit/19c33bbb4d02))

# Experimental Changes
- Do not mark a query as inactive when waiting for resolver or server payload by Tianyu Yao ([commit](https://github.com/facebook/relay/commit/dce1a2eaa7ec))
- In a exec time query, mark query as completed if all initial payloads are received by Tianyu Yao ([commit](https://github.com/facebook/relay/commit/ba09a88925c0))
- Fix operation executor for exec time by Tianyu Yao ([commit](https://github.com/facebook/relay/commit/4136a8cd71d9))
- Expose a loadClientQuery helper by Tianyu Yao ([commit](https://github.com/facebook/relay/commit/21926a531f4f))
- Support normalized responses in OperationExecutor by Tianyu Yao ([commit](https://github.com/facebook/relay/commit/f3a9afa895ba))
